/**
 * 导入Electron的渲染器进程API和预加载脚本定义的自定义API。
 * 这些API允许渲染器进程与主进程进行通信。
 */
import { contextBridge, ipcRenderer } from 'electron'
import { electronAPI } from '@electron-toolkit/preload'


window.ipcRenderer = ipcRenderer
// Custom APIs for renderer
const api = {}

/**
 * 检查当前进程是否为隔离的上下文。
 * 如果是，通过Context Bridge将Electron和自定义API暴露给主世界。
 * 如果不是，直接将API绑定到window对象上。
 */
if (process.contextIsolated) {
  try {
    /**
     * 使用Context Bridge将Electron API和自定义API暴露给浏览器窗口。
     * 这使得在隔离的渲染器进程中可以使用这些API。
     */
    contextBridge.exposeInMainWorld('electron', electronAPI)
    contextBridge.exposeInMainWorld('api', api)
  } catch (error) {
    /**
     * 捕获并记录在尝试暴露API时发生的任何错误。
     * 这有助于调试预加载脚本中的问题。
     */
    console.error(error)
  }
} else {
  /**
   * 在非隔离的渲染器进程中，直接将Electron API和自定义API绑定到window对象上。
   * 这种方法不提供与Context Bridge相同的隔离好处，但可用于旧项目或有特定需求的项目。
   */
  window.electron = electronAPI
  window.api = api
}

